home *** CD-ROM | disk | FTP | other *** search
/ TeX 1995 July / TeX CD-ROM July 1995 (Disc 1)(Walnut Creek)(1995).ISO / biblio / bibtex / contrib / bstfiles.trz / bstfiles / is-unsrt.bst < prev    next >
Text File  |  1991-09-12  |  22KB  |  1,164 lines

  1. %% =====================================================================
  2. %% WARNING: Do NOT edit this file.  It was produced automatically by
  3. %% Nelson H. F. Beebe <beebe@magna.math.utah.edu>
  4. %% from /home/csc-sun/a/sy/beebe/tex/bib/merge/xbtxbst.doc 
  5. %% on Thu Sep 12 10:55:32 MDT 1991
  6. %% =====================================================================
  7.  
  8.  
  9. %% =====================================================================
  10. %%  @BibTeX-style-file{
  11. %%      author          = "Nelson H. F. Beebe",
  12. %%      version         = "1.02",
  13. %%      date            = "12 September 1991",
  14. %%      filename        = "is-unsrt.bst",
  15. %%      address         = "Center for Scientific Computing
  16. %%                         Department of Mathematics
  17. %%                         South Physics Building
  18. %%                         University of Utah
  19. %%                         Salt Lake City, UT 84112
  20. %%                         USA
  21. %%                         Tel: (801) 581-5254",
  22. %%      checksum        = "02248 1163 2649 22083",
  23. %%      email           = "beebe@math.utah.edu (Internet)",
  24. %%      codetable       = "ISO/ASCII",
  25. %%      keywords        = "BibTeX, style, bibliography",
  26. %%      supported       = "yes",
  27. %%      docstring       = "This file is a modification of the standard
  28. %%                         BibTeX btxbst.doc file, or is a .bst file
  29. %%                         derived from that modification.  It contains
  30. %%                         added support for ISBN and ISSN fields, as
  31. %%                         well as for the PERIODICAL entry.  The UNIX C
  32. %%                         preprocessor can be used to extract the
  33. %%                         extensions of the standard styles, as
  34. %%                         follows:
  35. %%
  36. %%                         cpp -P -DPLAIN xbtxbst.doc is-plain.txt
  37. %%                         cpp -P -DUNSRT xbtxbst.doc is-unsrt.txt
  38. %%                         cpp -P -DALPHA xbtxbst.doc is-alpha.txt
  39. %%                         cpp -P -DABBRV xbtxbst.doc is-abbrv.txt
  40. %%
  41. %%                         If desired, a sed script can be used to
  42. %%                         eliminate non-essential comments (this
  43. %%                         reduces the file size by 2/3); a command
  44. %%                         filter step like
  45. %%                                 sed -e '/^%$/d' -e '/^%[^%].*$/d'
  46. %%                         will accomplish that job.
  47. %%
  48. %%                         The checksum field above contains a CRC-16
  49. %%                         checksum as the first value, followed by the
  50. %%                         equivalent of the standard UNIX wc (word
  51. %%                         count) utility output of lines, words, and
  52. %%                         characters.  This is produced by Robert
  53. %%                         Solovay's checksum utility."
  54. %%      }
  55. %% =====================================================================
  56. %% Revision history (reverse time order):
  57. %% 1.02 [12-Sep-1991]
  58. %%      Merge in Barbara N. Beeton's suggestion for hyphen-less
  59. %%      line breaks around volume(number):page.
  60. %% 1.01 [10-Sep-1991]
  61. %%      Update file comment header and use Solovay checksum program.
  62. %% 1.00 [17-Oct-1990]
  63. %%      Original version merging hand-edits of is-xxx.bst files into
  64. %%      this master file, xbtxbst.doc.
  65.  
  66.  
  67. %% BibTeX `plain' family
  68. %%       version 0.99b for BibTeX versions 0.99a or later, LaTeX version 2.09.
  69. %%       Copyright (C) 1985, all rights reserved.
  70. %%       Copying of this file is authorized only if either
  71. %%       (1) you make absolutely no changes to your copy, including name, or
  72. %%       (2) if you do make changes, you name it something other than
  73. %%       btxbst.doc, plain.bst, unsrt.bst, alpha.bst, and abbrv.bst.
  74. %%       This restriction helps ensure that all standard styles are identical.
  75. %%       The file btxbst.doc has the documentation for this style.
  76.  
  77.  
  78.  
  79.  
  80.  
  81.  
  82.  
  83.  
  84.  
  85.  
  86.  
  87.  
  88.  
  89. ENTRY
  90.   { address
  91.     author
  92.     booktitle
  93.     chapter
  94.     edition
  95.     editor
  96.     howpublished
  97.     institution
  98.     isbn
  99.     issn
  100.     journal
  101.     key
  102.     month
  103.     note
  104.     number
  105.     organization
  106.     pages
  107.     publisher
  108.     school
  109.     series
  110.     title
  111.     type
  112.     volume
  113.     year
  114.   }
  115.   {}
  116.  
  117.   { label }
  118.  
  119.  
  120.  
  121. INTEGERS { output.state before.all mid.sentence after.sentence after.block }
  122.  
  123. FUNCTION {init.state.consts}
  124. { #0 'before.all :=
  125.   #1 'mid.sentence :=
  126.   #2 'after.sentence :=
  127.   #3 'after.block :=
  128. }
  129.  
  130.  
  131. STRINGS { s t }
  132.  
  133. FUNCTION {output.nonnull}
  134. { 's :=
  135.   output.state mid.sentence =
  136.     { ", " * write$ }
  137.     { output.state after.block =
  138.         { add.period$ write$
  139.           newline$
  140.           "\newblock " write$
  141.         }
  142.         { output.state before.all =
  143.             'write$
  144.             { add.period$ " " * write$ }
  145.           if$
  146.         }
  147.       if$
  148.       mid.sentence 'output.state :=
  149.     }
  150.   if$
  151.   s
  152. }
  153.  
  154. FUNCTION {output}
  155. { duplicate$ empty$
  156.     'pop$
  157.     'output.nonnull
  158.   if$
  159. }
  160.  
  161. FUNCTION {output.check}
  162. { 't :=
  163.   duplicate$ empty$
  164.     { pop$ "empty " t * " in " * cite$ * warning$ }
  165.     'output.nonnull
  166.   if$
  167. }
  168.  
  169. FUNCTION {output.bibitem}
  170. { newline$
  171.  
  172.   "\bibitem{" write$
  173.  
  174.   cite$ write$
  175.   "}" write$
  176.   newline$
  177.   ""
  178.   before.all 'output.state :=
  179. }
  180.  
  181.  
  182. FUNCTION {fin.entry}
  183. { add.period$
  184.   write$
  185.   newline$
  186. }
  187.  
  188. FUNCTION {new.block}
  189. { output.state before.all =
  190.     'skip$
  191.     { after.block 'output.state := }
  192.   if$
  193. }
  194.  
  195. FUNCTION {new.sentence}
  196. { output.state after.block =
  197.     'skip$
  198.     { output.state before.all =
  199.         'skip$
  200.         { after.sentence 'output.state := }
  201.       if$
  202.     }
  203.   if$
  204. }
  205.  
  206.  
  207. FUNCTION {not}
  208. {   { #0 }
  209.     { #1 }
  210.   if$
  211. }
  212.  
  213. FUNCTION {and}
  214. {   'skip$
  215.     { pop$ #0 }
  216.   if$
  217. }
  218.  
  219. FUNCTION {or}
  220. {   { pop$ #1 }
  221.     'skip$
  222.   if$
  223. }
  224.  
  225.  
  226. FUNCTION {new.block.checka}
  227. { empty$
  228.     'skip$
  229.     'new.block
  230.   if$
  231. }
  232.  
  233. FUNCTION {new.block.checkb}
  234. { empty$
  235.   swap$ empty$
  236.   and
  237.     'skip$
  238.     'new.block
  239.   if$
  240. }
  241.  
  242.  
  243. FUNCTION {new.sentence.checka}
  244. { empty$
  245.     'skip$
  246.     'new.sentence
  247.   if$
  248. }
  249.  
  250. FUNCTION {new.sentence.checkb}
  251. { empty$
  252.   swap$ empty$
  253.   and
  254.     'skip$
  255.     'new.sentence
  256.   if$
  257. }
  258.  
  259.  
  260. FUNCTION {field.or.null}
  261. { duplicate$ empty$
  262.     { pop$ "" }
  263.     'skip$
  264.   if$
  265. }
  266.  
  267. FUNCTION {emphasize}
  268. { duplicate$ empty$
  269.     { pop$ "" }
  270.     { "{\em " swap$ * "}" * }
  271.   if$
  272. }
  273.  
  274. INTEGERS { nameptr namesleft numnames }
  275.  
  276. FUNCTION {format.names}
  277. { 's :=
  278.   #1 'nameptr :=
  279.   s num.names$ 'numnames :=
  280.   numnames 'namesleft :=
  281.     { namesleft #0 > }
  282.  
  283.     { s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ 't :=
  284.  
  285.       nameptr #1 >
  286.         { namesleft #1 >
  287.             { ", " * t * }
  288.             { numnames #2 >
  289.                 { "," * }
  290.                 'skip$
  291.               if$
  292.               t "others" =
  293.                 { " et~al." * }
  294.                 { " and " * t * }
  295.               if$
  296.             }
  297.           if$
  298.         }
  299.         't
  300.       if$
  301.       nameptr #1 + 'nameptr :=
  302.       namesleft #1 - 'namesleft :=
  303.     }
  304.   while$
  305. }
  306.  
  307. FUNCTION {format.authors}
  308. { author empty$
  309.     { "" }
  310.     { author format.names }
  311.   if$
  312. }
  313.  
  314. FUNCTION {format.editors}
  315. { editor empty$
  316.     { "" }
  317.     { editor format.names
  318.       editor num.names$ #1 >
  319.         { ", editors" * }
  320.         { ", editor" * }
  321.       if$
  322.     }
  323.   if$
  324. }
  325.  
  326. FUNCTION {format.isbn}
  327. { isbn empty$
  328.     { "" }
  329.     { new.block "ISBN " isbn * }
  330.   if$
  331. }
  332.  
  333. FUNCTION {format.issn}
  334. { issn empty$
  335.     { "" }
  336.     { new.block "ISSN " issn * }
  337.   if$
  338. }
  339.  
  340.  
  341. FUNCTION {format.title}
  342. { title empty$
  343.     { "" }
  344.  
  345.     { title "t" change.case$ }
  346.  
  347.   if$
  348. }
  349.  
  350.  
  351.  
  352. FUNCTION {n.dashify}
  353. { 't :=
  354.   ""
  355.     { t empty$ not }
  356.     { t #1 #1 substring$ "-" =
  357.         { t #1 #2 substring$ "--" = not
  358.             { "--" *
  359.               t #2 global.max$ substring$ 't :=
  360.             }
  361.             {   { t #1 #1 substring$ "-" = }
  362.                 { "-" *
  363.                   t #2 global.max$ substring$ 't :=
  364.                 }
  365.               while$
  366.             }
  367.           if$
  368.         }
  369.         { t #1 #1 substring$ *
  370.           t #2 global.max$ substring$ 't :=
  371.         }
  372.       if$
  373.     }
  374.   while$
  375. }
  376.  
  377.  
  378. FUNCTION {format.date}
  379. { year empty$
  380.     { month empty$
  381.         { "" }
  382.         { "there's a month but no year in " cite$ * warning$
  383.           month
  384.         }
  385.       if$
  386.     }
  387.     { month empty$
  388.         'year
  389.         { month " " * year * }
  390.       if$
  391.     }
  392.   if$
  393. }
  394.  
  395.  
  396. FUNCTION {format.btitle}
  397. { title emphasize
  398. }
  399.  
  400.  
  401. FUNCTION {tie.or.space.connect}
  402. { duplicate$ text.length$ #3 <
  403.     { "~" }
  404.     { " " }
  405.   if$
  406.   swap$ * *
  407. }
  408.  
  409.  
  410. FUNCTION {either.or.check}
  411. { empty$
  412.     'pop$
  413.     { "can't use both " swap$ * " fields in " * cite$ * warning$ }
  414.   if$
  415. }
  416.  
  417.  
  418. FUNCTION {format.bvolume}
  419. { volume empty$
  420.     { "" }
  421.     { "volume" volume tie.or.space.connect
  422.       series empty$
  423.         'skip$
  424.         { " of " * series emphasize * }
  425.       if$
  426.       "volume and number" number either.or.check
  427.     }
  428.   if$
  429. }
  430.  
  431.  
  432. FUNCTION {format.number.series}
  433. { volume empty$
  434.     { number empty$
  435.         { series field.or.null }
  436.         { output.state mid.sentence =
  437.             { "number" }
  438.             { "Number" }
  439.           if$
  440.           number tie.or.space.connect
  441.           series empty$
  442.             { "there's a number but no series in " cite$ * warning$ }
  443.             { " in " * series * }
  444.           if$
  445.         }
  446.       if$
  447.     }
  448.     { "" }
  449.   if$
  450. }
  451.  
  452.  
  453. FUNCTION {format.edition}
  454. { edition empty$
  455.     { "" }
  456.     { output.state mid.sentence =
  457.         { edition "l" change.case$ " edition" * }
  458.         { edition "t" change.case$ " edition" * }
  459.       if$
  460.     }
  461.   if$
  462. }
  463.  
  464.  
  465. INTEGERS { multiresult }
  466.  
  467. FUNCTION {multi.page.check}
  468. { 't :=
  469.   #0 'multiresult :=
  470.     { multiresult not
  471.       t empty$ not
  472.       and
  473.     }
  474.     { t #1 #1 substring$
  475.       duplicate$ "-" =
  476.       swap$ duplicate$ "," =
  477.       swap$ "+" =
  478.       or or
  479.         { #1 'multiresult := }
  480.         { t #2 global.max$ substring$ 't := }
  481.       if$
  482.     }
  483.   while$
  484.   multiresult
  485. }
  486.  
  487.  
  488. FUNCTION {format.pages}
  489. { pages empty$
  490.     { "" }
  491.     { pages multi.page.check
  492.         { "pages" pages n.dashify tie.or.space.connect }
  493.         { "page" pages tie.or.space.connect }
  494.       if$
  495.     }
  496.   if$
  497. }
  498.  
  499.  
  500. FUNCTION {format.vol.num.pages}
  501. { volume field.or.null
  502.   number empty$
  503.     'skip$
  504.     { "\penalty0 (" number * ")" * *
  505.       volume empty$
  506.         { "there's a number but no volume in " cite$ * warning$ }
  507.         'skip$
  508.       if$
  509.     }
  510.   if$
  511.   pages empty$
  512.     'skip$
  513.     { duplicate$ empty$
  514.         { pop$ format.pages }
  515.         { ":\penalty0 " * pages n.dashify * }
  516.       if$
  517.     }
  518.   if$
  519. }
  520.  
  521.  
  522.  
  523. FUNCTION {format.chapter.pages}
  524. { chapter empty$
  525.     'format.pages
  526.     { type empty$
  527.         { "chapter" }
  528.         { type "l" change.case$ }
  529.       if$
  530.       chapter tie.or.space.connect
  531.       pages empty$
  532.         'skip$
  533.         { ", " * format.pages * }
  534.       if$
  535.     }
  536.   if$
  537. }
  538.  
  539.  
  540. FUNCTION {format.in.ed.booktitle}
  541. { booktitle empty$
  542.     { "" }
  543.     { editor empty$
  544.         { "In " booktitle emphasize * }
  545.         { "In " format.editors * ", " * booktitle emphasize * }
  546.       if$
  547.     }
  548.   if$
  549. }
  550.  
  551.  
  552. FUNCTION {empty.misc.check}
  553. { author empty$ title empty$ howpublished empty$
  554.   month empty$ year empty$ note empty$
  555.   and and and and and
  556.  
  557.  
  558.  
  559.     { "all relevant fields are empty in " cite$ * warning$ }
  560.     'skip$
  561.   if$
  562. }
  563.  
  564.  
  565. FUNCTION {format.thesis.type}
  566. { type empty$
  567.     'skip$
  568.     { pop$
  569.       type "t" change.case$
  570.     }
  571.   if$
  572. }
  573.  
  574.  
  575. FUNCTION {format.tr.number}
  576. { type empty$
  577.     { "Technical Report" }
  578.     'type
  579.   if$
  580.   number empty$
  581.     { "t" change.case$ }
  582.     { number tie.or.space.connect }
  583.   if$
  584. }
  585.  
  586.  
  587. FUNCTION {format.article.crossref}
  588. { key empty$
  589.     { journal empty$
  590.         { "need key or journal for " cite$ * " to crossref " * crossref *
  591.           warning$
  592.           ""
  593.         }
  594.         { "In {\em " journal * "\/}" * }
  595.       if$
  596.     }
  597.     { "In " key * }
  598.   if$
  599.   " \cite{" * crossref * "}" *
  600. }
  601.  
  602.  
  603. FUNCTION {format.crossref.editor}
  604. { editor #1 "{vv~}{ll}" format.name$
  605.   editor num.names$ duplicate$
  606.   #2 >
  607.     { pop$ " et~al." * }
  608.     { #2 <
  609.         'skip$
  610.         { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
  611.             { " et~al." * }
  612.             { " and " * editor #2 "{vv~}{ll}" format.name$ * }
  613.           if$
  614.         }
  615.       if$
  616.     }
  617.   if$
  618. }
  619.  
  620.  
  621. FUNCTION {format.book.crossref}
  622. { volume empty$
  623.     { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
  624.       "In "
  625.     }
  626.     { "Volume" volume tie.or.space.connect
  627.       " of " *
  628.     }
  629.   if$
  630.   editor empty$
  631.   editor field.or.null author field.or.null =
  632.   or
  633.     { key empty$
  634.         { series empty$
  635.             { "need editor, key, or series for " cite$ * " to crossref " *
  636.               crossref * warning$
  637.               "" *
  638.             }
  639.             { "{\em " * series * "\/}" * }
  640.           if$
  641.         }
  642.         { key * }
  643.       if$
  644.     }
  645.     { format.crossref.editor * }
  646.   if$
  647.   " \cite{" * crossref * "}" *
  648. }
  649.  
  650.  
  651. FUNCTION {format.incoll.inproc.crossref}
  652. { editor empty$
  653.   editor field.or.null author field.or.null =
  654.   or
  655.     { key empty$
  656.         { booktitle empty$
  657.             { "need editor, key, or booktitle for " cite$ * " to crossref " *
  658.               crossref * warning$
  659.               ""
  660.             }
  661.             { "In {\em " booktitle * "\/}" * }
  662.           if$
  663.         }
  664.         { "In " key * }
  665.       if$
  666.     }
  667.     { "In " format.crossref.editor * }
  668.   if$
  669.   " \cite{" * crossref * "}" *
  670. }
  671.  
  672.  
  673. FUNCTION {article}
  674. { output.bibitem
  675.   format.authors "author" output.check
  676.   new.block
  677.   format.title "title" output.check
  678.   new.block
  679.   crossref missing$
  680.     { journal emphasize "journal" output.check
  681.       format.vol.num.pages output
  682.       format.date "year" output.check
  683.     }
  684.     { format.article.crossref output.nonnull
  685.       format.pages output
  686.     }
  687.   if$
  688.   new.block
  689.   note output
  690.   fin.entry
  691. }
  692.  
  693. FUNCTION {book}
  694. { output.bibitem
  695.   author empty$
  696.     { format.editors "author and editor" output.check }
  697.     { format.authors output.nonnull
  698.       crossref missing$
  699.         { "author and editor" editor either.or.check }
  700.         'skip$
  701.       if$
  702.     }
  703.   if$
  704.   new.block
  705.   format.btitle "title" output.check
  706.   crossref missing$
  707.     { format.bvolume output
  708.       new.block
  709.       format.number.series output
  710.       new.sentence
  711.       publisher "publisher" output.check
  712.       address output
  713.     }
  714.     { new.block
  715.       format.book.crossref output.nonnull
  716.     }
  717.   if$
  718.   format.edition output
  719.   format.date "year" output.check
  720.   format.isbn output
  721.   new.block
  722.   note output
  723.   fin.entry
  724. }
  725.  
  726.  
  727. FUNCTION {booklet}
  728. { output.bibitem
  729.   format.authors output
  730.   new.block
  731.   format.title "title" output.check
  732.   howpublished address new.block.checkb
  733.   howpublished output
  734.   address output
  735.   format.date output
  736.   format.isbn output
  737.   new.block
  738.   note output
  739.   fin.entry
  740. }
  741.  
  742.  
  743.  
  744. FUNCTION {inbook}
  745. { output.bibitem
  746.   author empty$
  747.     { format.editors "author and editor" output.check }
  748.     { format.authors output.nonnull
  749.       crossref missing$
  750.         { "author and editor" editor either.or.check }
  751.         'skip$
  752.       if$
  753.     }
  754.   if$
  755.   new.block
  756.   format.btitle "title" output.check
  757.   crossref missing$
  758.     { format.bvolume output
  759.       format.chapter.pages "chapter and pages" output.check
  760.       new.block
  761.       format.number.series output
  762.       new.sentence
  763.       publisher "publisher" output.check
  764.       address output
  765.     }
  766.     { format.chapter.pages "chapter and pages" output.check
  767.       new.block
  768.       format.book.crossref output.nonnull
  769.     }
  770.   if$
  771.   format.edition output
  772.   format.date "year" output.check
  773.   format.isbn output
  774.   new.block
  775.   note output
  776.   fin.entry
  777. }
  778.  
  779.  
  780. FUNCTION {incollection}
  781. { output.bibitem
  782.   format.authors "author" output.check
  783.   new.block
  784.   format.title "title" output.check
  785.   new.block
  786.   crossref missing$
  787.     { format.in.ed.booktitle "booktitle" output.check
  788.       format.bvolume output
  789.       format.number.series output
  790.       format.chapter.pages output
  791.       new.sentence
  792.       publisher "publisher" output.check
  793.       address output
  794.       format.edition output
  795.       format.date "year" output.check
  796.     }
  797.     { format.incoll.inproc.crossref output.nonnull
  798.       format.chapter.pages output
  799.     }
  800.   if$
  801.   format.isbn output
  802.   new.block
  803.   note output
  804.   fin.entry
  805. }
  806.  
  807.  
  808. FUNCTION {inproceedings}
  809. { output.bibitem
  810.   format.authors "author" output.check
  811.   new.block
  812.   format.title "title" output.check
  813.   new.block
  814.   crossref missing$
  815.     { format.in.ed.booktitle "booktitle" output.check
  816.       format.bvolume output
  817.       format.number.series output
  818.       format.pages output
  819.       address empty$
  820.         { organization publisher new.sentence.checkb
  821.           organization output
  822.           publisher output
  823.           format.date "year" output.check
  824.         }
  825.         { address output.nonnull
  826.           format.date "year" output.check
  827.           new.sentence
  828.           organization output
  829.           publisher output
  830.         }
  831.       if$
  832.     }
  833.     { format.incoll.inproc.crossref output.nonnull
  834.       format.pages output
  835.     }
  836.   if$
  837.   format.isbn output
  838.   new.block
  839.   note output
  840.   fin.entry
  841. }
  842.  
  843.  
  844. FUNCTION {conference} { inproceedings }
  845.  
  846.  
  847. FUNCTION {manual}
  848. { output.bibitem
  849.   author empty$
  850.     { organization empty$
  851.         'skip$
  852.         { organization output.nonnull
  853.           address output
  854.         }
  855.       if$
  856.     }
  857.     { format.authors output.nonnull }
  858.   if$
  859.   new.block
  860.   format.btitle "title" output.check
  861.   author empty$
  862.     { organization empty$
  863.         { address new.block.checka
  864.           address output
  865.         }
  866.         'skip$
  867.       if$
  868.     }
  869.     { organization address new.block.checkb
  870.       organization output
  871.       address output
  872.     }
  873.   if$
  874.   format.edition output
  875.   format.date output
  876.   new.block
  877.   note output
  878.   fin.entry
  879. }
  880.  
  881.  
  882. FUNCTION {mastersthesis}
  883. { output.bibitem
  884.   format.authors "author" output.check
  885.   new.block
  886.   format.title "title" output.check
  887.   new.block
  888.   "Master's thesis" format.thesis.type output.nonnull
  889.   school "school" output.check
  890.   address output
  891.   format.date "year" output.check
  892.   new.block
  893.   note output
  894.   fin.entry
  895. }
  896.  
  897.  
  898. FUNCTION {misc}
  899. { output.bibitem
  900.   format.authors output
  901.   title howpublished new.block.checkb
  902.   format.title output
  903.   howpublished new.block.checka
  904.   howpublished output
  905.   format.date output
  906.   format.issn output
  907.   new.block
  908.   note output
  909.   fin.entry
  910.   empty.misc.check
  911. }
  912.  
  913.  
  914. FUNCTION {phdthesis}
  915. { output.bibitem
  916.   format.authors "author" output.check
  917.   new.block
  918.   format.btitle "title" output.check
  919.   new.block
  920.   "PhD thesis" format.thesis.type output.nonnull
  921.   school "school" output.check
  922.   address output
  923.   format.date "year" output.check
  924.   new.block
  925.   note output
  926.   fin.entry
  927. }
  928.  
  929.  
  930. FUNCTION {periodical}
  931. { output.bibitem
  932.   editor empty$
  933.     { organization output }
  934.     { format.editors output.nonnull }
  935.   if$
  936.   new.block
  937.   title emphasize "title" output.check
  938.   format.vol.num.pages output
  939.   format.date output
  940.   format.issn output
  941.   new.sentence
  942.   publisher output
  943.   address output
  944.   howpublished new.block.checka
  945.   howpublished output
  946.   new.block
  947.   note output
  948.   fin.entry
  949. }
  950.  
  951.  
  952. FUNCTION {proceedings}
  953. { output.bibitem
  954.   editor empty$
  955.     { organization output }
  956.     { format.editors output.nonnull }
  957.   if$
  958.   new.block
  959.   format.btitle "title" output.check
  960.   format.bvolume output
  961.   format.number.series output
  962.   address empty$
  963.     { editor empty$
  964.         { publisher new.sentence.checka }
  965.         { organization publisher new.sentence.checkb
  966.           organization output
  967.         }
  968.       if$
  969.       publisher output
  970.       format.date "year" output.check
  971.     }
  972.     { address output.nonnull
  973.       format.date "year" output.check
  974.       new.sentence
  975.       editor empty$
  976.         'skip$
  977.         { organization output }
  978.       if$
  979.       publisher output
  980.     }
  981.   if$
  982.   format.isbn output
  983.   new.block
  984.   note output
  985.   fin.entry
  986. }
  987.  
  988.  
  989. FUNCTION {techreport}
  990. { output.bibitem
  991.   format.authors "author" output.check
  992.   new.block
  993.   format.title "title" output.check
  994.   new.block
  995.   format.tr.number output.nonnull
  996.   institution "institution" output.check
  997.   address output
  998.   format.date "year" output.check
  999.   new.block
  1000.   note output
  1001.   fin.entry
  1002. }
  1003.  
  1004.  
  1005. FUNCTION {unpublished}
  1006. { output.bibitem
  1007.   format.authors "author" output.check
  1008.   new.block
  1009.   format.title "title" output.check
  1010.   new.block
  1011.   note "note" output.check
  1012.   format.date output
  1013.   fin.entry
  1014. }
  1015.  
  1016.  
  1017. FUNCTION {default.type} { misc }
  1018.  
  1019.  
  1020.  
  1021.  
  1022. MACRO {jan} {"January"}
  1023.  
  1024. MACRO {feb} {"February"}
  1025.  
  1026. MACRO {mar} {"March"}
  1027.  
  1028. MACRO {apr} {"April"}
  1029.  
  1030. MACRO {may} {"May"}
  1031.  
  1032. MACRO {jun} {"June"}
  1033.  
  1034. MACRO {jul} {"July"}
  1035.  
  1036. MACRO {aug} {"August"}
  1037.  
  1038. MACRO {sep} {"September"}
  1039.  
  1040. MACRO {oct} {"October"}
  1041.  
  1042. MACRO {nov} {"November"}
  1043.  
  1044. MACRO {dec} {"December"}
  1045.  
  1046.  
  1047.  
  1048.  
  1049.  
  1050.  
  1051. MACRO {acmcs} {"ACM Computing Surveys"}
  1052.  
  1053. MACRO {acta} {"Acta Informatica"}
  1054.  
  1055. MACRO {cacm} {"Communications of the ACM"}
  1056.  
  1057. MACRO {ibmjrd} {"IBM Journal of Research and Development"}
  1058.  
  1059. MACRO {ibmsj} {"IBM Systems Journal"}
  1060.  
  1061. MACRO {ieeese} {"IEEE Transactions on Software Engineering"}
  1062.  
  1063. MACRO {ieeetc} {"IEEE Transactions on Computers"}
  1064.  
  1065. MACRO {ieeetcad}
  1066.  {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"}
  1067.  
  1068. MACRO {ipl} {"Information Processing Letters"}
  1069.  
  1070. MACRO {jacm} {"Journal of the ACM"}
  1071.  
  1072. MACRO {jcss} {"Journal of Computer and System Sciences"}
  1073.  
  1074. MACRO {scp} {"Science of Computer Programming"}
  1075.  
  1076. MACRO {sicomp} {"SIAM Journal on Computing"}
  1077.  
  1078. MACRO {tocs} {"ACM Transactions on Computer Systems"}
  1079.  
  1080. MACRO {tods} {"ACM Transactions on Database Systems"}
  1081.  
  1082. MACRO {tog} {"ACM Transactions on Graphics"}
  1083.  
  1084. MACRO {toms} {"ACM Transactions on Mathematical Software"}
  1085.  
  1086. MACRO {toois} {"ACM Transactions on Office Information Systems"}
  1087.  
  1088. MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"}
  1089.  
  1090. MACRO {tcs} {"Theoretical Computer Science"}
  1091.  
  1092.  
  1093.  
  1094.  
  1095. READ
  1096.  
  1097.  
  1098.  
  1099.  
  1100.  
  1101.  
  1102.  
  1103.  
  1104.  
  1105.  
  1106.  
  1107.  
  1108.  
  1109.  
  1110.  
  1111.  
  1112. STRINGS { longest.label }
  1113.  
  1114. INTEGERS { number.label longest.label.width }
  1115.  
  1116. FUNCTION {initialize.longest.label}
  1117. { "" 'longest.label :=
  1118.   #1 'number.label :=
  1119.   #0 'longest.label.width :=
  1120. }
  1121.  
  1122. FUNCTION {longest.label.pass}
  1123. { number.label int.to.str$ 'label :=
  1124.   number.label #1 + 'number.label :=
  1125.   label width$ longest.label.width >
  1126.     { label 'longest.label :=
  1127.       label width$ 'longest.label.width :=
  1128.     }
  1129.     'skip$
  1130.   if$
  1131. }
  1132.  
  1133. EXECUTE {initialize.longest.label}
  1134.  
  1135. ITERATE {longest.label.pass}
  1136.  
  1137.  
  1138.  
  1139.  
  1140. FUNCTION {begin.bib}
  1141.  
  1142. { preamble$ empty$
  1143.  
  1144.     'skip$
  1145.     { preamble$ write$ newline$ }
  1146.   if$
  1147.   "\begin{thebibliography}{"  longest.label  * "}" * write$ newline$
  1148. }
  1149.  
  1150. EXECUTE {begin.bib}
  1151.  
  1152. EXECUTE {init.state.consts}
  1153.  
  1154.  
  1155. ITERATE {call.type$}
  1156.  
  1157.  
  1158. FUNCTION {end.bib}
  1159. { newline$
  1160.   "\end{thebibliography}" write$ newline$
  1161. }
  1162.  
  1163. EXECUTE {end.bib}
  1164.